형 변환(Casting)
✒️ 2025-05-16 17:09 내용 수정
자료형을 다른 자료형으로 변환하는 것
- boolean 형을 제외한 나머지 기본 타입 간의 형 변환은 자유롭다.
- Java에서 연산할 때는 피연산자들의 타압을 모두 같은 타입으로 만들고 수행된다.
- 문자 char와 문자열 String은 String이 class 타입이기 때문에 단순한 형변환 불가
- char의 클래스인 Character도 String과는 상속관계가 아니기에 형변환이 안된다.
- 다형성과 타입 변환#1. 클래스의 객체 타입 변환 참고
1. 묵시적 형변환(Implicit Cast)
자동으로 컴파일러가 자료형을 변환
- 작은 자료형에서 큰 자료형으로 변환할 때(Widening Casting) 사용한다.
- byte -> short -> int -> long
- 정수형->실수형
- char -> short 이상의 정수형
- 데이터의 손실이 발생하지 않거나, 손실을 최소화하는 방향으로 타입 변환을 진행한다.
- 산술 연산에서 자동 변환 시엔 이와 같은 동작을 Promotion이라 표현한다.
2. 명시적 형변환(Explicit Cast)
타입 변환이 자동으로 이루어지지 않을 때 강제로 변환
- 큰 자료형에서 작은 자료형으로 변환할 때(Narrowing Casting) 주로 사용한다.
- 다만 큰 타입을 작은 타입으로 바꿀 때 데이터 손실이 발생할 가능성 높다.
- 데이터 타입의 크기가 같아도 다른 자료형이면 명시적 형변환을 해야 한다.
- 대입 또는 연산 시 이와 같은 동작을 Demotion이라 표현한다.
(데이터타입) 변환할데이터/변수;
int a = 135;
long b = 0;
byte c = 0;
b = a; // 자동형변환
//=> a = 135; (int)
//=> b = 135; (long)
c = a; // error!
// byte는 -127~126
byte b = 0;
int a = 35;
b = (byte)a; //강제형변환(특히 큰 타입을 작은 타입에 넣을 때 강제해줘야함)